package com.flaskpy.web.eternity.core.api;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.flaskpy.web.eternity.core.exception.ExpCodeFactory;
import com.flaskpy.web.eternity.core.exception.abs.IExceptionEnum;

import java.util.List;

/**
 * @className: R
 * @description: 这个人很赖不留下一点说明
 * @author: flaskpy 代码copy大师
 * @date: 2021/6/10
 **/
public class R {
    /**
     * 返回成功数据
     * @param data
     * @param <T>
     * @return
     */
    public static <T> SuccessResponse<T> success(T data){
        return new SuccessResponse<>(data);
    }

    /**
     * 返回成功数据与分页数据
     * @param page
     * @param <T>
     * @return
     */
    public static <T> SuccessResponse<List<T>> success(IPage<T> page){
        SuccessResponse<List<T>> result=new SuccessResponse(page.getRecords());
        result.setPageInfo(new PageInfo(page.getCurrent(),page.getSize(),page.getPages()));
        return result;
    }

    /**
     * 返回成功数据与分页数据
     * @param data
     * @param page
     * @param <T>
     * @return
     */
    public static <T> SuccessResponse<T> success(T data,IPage<T> page){
        SuccessResponse<T> result=new SuccessResponse(data);
        result.setPageInfo(new PageInfo(page.getCurrent(),page.getSize(),page.getPages()));
        return result;
    }

    /**
     * 返回成功数据
     * @return
     */
    public static SuccessResponse success(){
        return new SuccessResponse();
    }

    /**
     * 返回一个错误请求
     * @param exceptionEnum
     * @param data
     * @param <T>
     * @return
     */
    public static <T> ErrorResponse<T> error(IExceptionEnum exceptionEnum,T data){
        ErrorResponse errorResponse=new ErrorResponse(ExpCodeFactory.generate(exceptionEnum),exceptionEnum.getMsg(),data);
        return errorResponse;
    }

    /**
     * 返回一个错误清求
     * @param exceptionEnum
     * @param <T>
     * @return
     */
    public static <T> ErrorResponse<T> error(IExceptionEnum exceptionEnum){
        return error(exceptionEnum,null);
    }

}
